package com.unju.hibernate.patronDAO.imp;


import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;

import com.unju.hibernate.HibernateBase;
import com.unju.hibernate.entidades.Perfil;
import com.unju.hibernate.patronDAO.PatronDAO;

public class PerfilDAOImp extends HibernateBase implements PatronDAO<Perfil> {

	@Override
	public List<Perfil> getAll() {
		getSession().beginTransaction();		
		List<Perfil> lista=getSession().createCriteria(Perfil.class).list();
        getSession().getTransaction().commit();
        getSession().close();				
		return  lista;
	}

	@Override
	public Perfil get(Integer idDato) {
		getSession().beginTransaction();
		Perfil p=(Perfil)getSession().get(Perfil.class, idDato);
        getSession().getTransaction().commit();
        getSession().close();
		return p;
	}

	@Override
	public void insert(Perfil unDato) {
		getSession().beginTransaction();
        getSession().save(unDato);
        getSession().getTransaction().commit();
        getSession().close();		
	}

	@Override
	public void update(Perfil unDato) {
		getSession().beginTransaction();
		getSession().update(unDato);        
        getSession().getTransaction().commit();
        getSession().close();		
	}

	@Override
	public void delete(Perfil unDato) {
		getSession().beginTransaction();
		getSession().delete(unDato);     
        getSession().getTransaction().commit();
        getSession().close();				
	}
	public List<Perfil> getFind(String criterio) {
		getSession().beginTransaction();
		Criteria criteria = getSession().createCriteria(Perfil.class);
        if(!criterio.isEmpty())
            criteria.add(Restrictions.ilike("nombre", "%"+criterio+"%"));
        List<Perfil> lista=criteria.list();
        getSession().getTransaction().commit();
        getSession().close();		
        return lista;		
	}

	public Perfil getPerfilByName(String nombrePerfil) {
		Perfil p = null;
		getSession().beginTransaction();
		Criteria criteria = getSession().createCriteria(Perfil.class);
		criteria.add(Restrictions.eq("nombre", nombrePerfil));
		if(criteria.list().size() == 1)
			p = (Perfil) criteria.list().get(0);
		getSession().close();
		return p;
	}
}
